import { Message } from 'element-ui';
import api from "../request/api.js"


export default{
    // 未登录拦截
    filterLogin(res,_this,callback){
        if(res.data.code == 401 || res.data.code == 402){
            localStorage.removeItem('token');
            _this.$router.push('/login'); 
            // Toast("登陆信息已过期，需要重新登陆!"); 
            // Message({center: true,message: "登陆信息已过期，需要重新登陆!",type: 'warning'});
        }else{
            callback()
        }
        
    },
    // 生成uuid
    guid() {
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
            var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
            return v.toString(16);
        });
    },
    // 获取所有角色
    getAllRoles(callback){
        api.selectAllRoles()
        .then(result => {
            callback(result)
        })
    },
    // 查询所有单位
    selectAllUnit(callback){
        api.selectAllUnit()
        .then(result=>{
            callback(result)
        })
    },
    // 查询所有菜单
    selectAllMenu(callback){
        api.selectAllMenu()
        .then(result=>{
            callback(result)
        })
    },
    // 根据code查询数据字典
    selectDictByCode(code,callback){
        api.selectDictBycode({params:{code:code}})
        .then(result=>{
            callback(result)
        })
    },
    // 处理用户关联的菜单
    menuFormat(array1){
        // 准备一个空数组装菜单
        var array = []
        if(array1){
            // 第一次循环得到第一级菜单
            array1.forEach(element => {
                if(element.supId == "0"){
                    element.secMenu = [] 
                    array.push(element)
                }
                
            })
            // 第二次循环得到二级菜单
            array.forEach(el => {
                array1.forEach(el2 => {
                    if(el.menuId == el2.supId){
                        el.secMenu.push(el2)
                    }
                })
                
            })
        }
        sessionStorage.menuList = JSON.stringify(array)
        return array
    },
    // 递归处理数据
    dataFormat(array){
        if(array){
            array.forEach(element => {
                element.label = element.name
                element.status = 1
                if(element.childList && element.childList.length>=1){
                    element.childList.length>0?element.children = element.childList:""
                    this.dataFormat(element.children)
                }
            })
        }
        
        return array
    },
    // 获取登陆用户信息
    getUserInfo(){
        var userInfo = localStorage.userInfo?JSON.parse(localStorage.userInfo):""
        if(userInfo && userInfo.roles.length > 0 ){
            userInfo.roleId = []
            userInfo.roleName = []
            userInfo.auth = []
            userInfo.menuList = []
            userInfo.roles.forEach(e => {
                userInfo.roleName.push(e.name)
                userInfo.roleId.push(e.id)
                if(e.authority.length > 0){
                    e.authority.forEach(el => {
                        userInfo.auth.push(el.name)
                        if(el.menuList && el.menuList.length>0){
                            userInfo.menuList = el.menuList
                        }
                    })
                }
            })
        }

        return userInfo
    },
    // 根据用户id查询用户信息
    getUserInfoById(userId){
        api.selectUserById({params:{id:userId}})
        .then(result=>{
            if(result.data.success){
                // 保存用户信息
                localStorage.userInfo = JSON.stringify(result.data.data)
                // console.log(localStorage.userInfo)
            }
        })
    },
    // 获取浏览器可视区域高度
    getClientHeight(){
        var clientHeight = ""
        clientHeight =   `${document.documentElement.clientHeight}`          //document.body.clientWidth;
        window.onresize = function temp() {
            clientHeight = `${document.documentElement.clientHeight}`;
        };
        return clientHeight
    },
    // 为空验证
    emptyValidate(rule, value, callback){
        value = value.toString()
        // if(typeof value == )
        if (value.replace(/^\s*|\s*$/g,'') === '' || value.length == 0) {
            callback(new Error('此项不能为空'));
        }
         else {
            callback();
        }
    },
    // 验证为数字
    numberValidate(rule, value, callback){
        value = value.toString()
        if (value.replace(/^\s*|\s*$/g,'') === '') {
            callback(new Error('此项不能为空'));
        }else if(!/^[0-9]*[1-9][0-9]*$/.test(value)){
            callback(new Error('只能输入数字'));
        }
         else {
            callback();
        }
    },
    // 重复密码验证
    checkPsd(rule, value, callback){
        value = value.toString()
        if (value.replace(/^\s*|\s*$/g,'') === '') {
            callback(new Error('重复密码不能为空'));
        } else if (value !== this.form.passwordNum) {
            callback(new Error('两次输入密码不一致!'));
        } 
        else {
            callback();
        }
    },
    // 验证邮箱格式
    checkEmail(val){
        var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
        if(!myreg.test(val))
        {
            // Toast("请输入有效的E_mail!");  
            Message({center: true,message: "请输入有效的E_mail!",type: 'warning'});
            return false;
        }
    },
    // 验证手机号的格式
    checkPhone(rule, value, callback){
        value = value.toString()
        value = value.replace(/^\s*|\s*$/g,'')
        if (value === '') {
            callback(new Error('手机号不能为空'));
        } else if (!(/^1[3456789]\d{9}$/.test(value))) {
            callback(new Error('手机号码有误，请重新填写!'));
        } 
        else {
            callback();
        }
        // if(!(/^1[3456789]\d{9}$/.test(val))){ 
        //     Toast("手机号码有误，请重新填写!");  
        //     return false; 
        // }else{
        //     return true; 
        // }
    },
    // 验证登录密码
    checkPassword(val){
        var p=/^(\w){6,20}$/;//6位数字
	    var r=p.exec(val);//校验
		if(!r){
            // Toast("只能输入6-20个字母、数字、下划线!");  
            Message({center: true,message: "只能输入6-20个字母、数字、下划线!",type: 'warning'});
		}
    },
    // 日期格式化
    dateFormat3(cellValue){
        let moment = require("moment")
        let pattern="YYYY-MM-DD HH:mm:ss"
        
        return cellValue?moment(cellValue).format(pattern):""
    },
    // 日期格式化
    dateFormat(row, column, cellValue, index){
        let moment = require("moment")
        let pattern="YYYY-MM-DD HH:mm:ss"
        
        return cellValue?moment(cellValue).format(pattern):""
    },
    // 日期格式化 YYYY-MM-DD
    dateFormat2(row, column, cellValue, index){
        let moment = require("moment")
        let pattern="YYYY-MM-DD"
        
        return cellValue?moment(cellValue).format(pattern):""
    },
    // 格式化性别
    sexFormat(row, column, cellValue, index){
        if(cellValue == "2") return "男"
        return "女"
    },
    // 格式化状态
    statusFormat2(row, column, cellValue, index){
        if(cellValue == "1") return "正常"
        return "禁用"
    },
    typeFormat(row, column, cellValue, index){
        if(cellValue == "1") {
            return "菜单"
        }else if(cellValue == "0"){
            return "目录"
        }else{
            return "按钮"
        }
        
    },
    statusFormat(row, column, cellValue, index){
        if(cellValue == "3"){
            return "审核未通过"
        }else if(cellValue == "2"){
            return "审核通过"
        }else if(cellValue == "1"){
            return "审核中"
        }else{
            return "未审核"
        }
    },
}
